#!/bin/bash

# 定义分支名称
SOURCE_BRANCH="feature"    # 源分支（你要合并的分支）
TARGET_BRANCH="main"       # 目标分支（合并到哪个分支）
STASH_MSG="暂存${SOURCE_BRANCH}分支的临时改动"

# 检查是否为Git仓库
if [ ! -d .git ]; then
    echo "错误：当前目录不是Git仓库！"
    exit 1
fi

# 1. 存储当前工作区修改
echo "=== 存储当前工作区修改 ==="
git stash save "${STASH_MSG}"

# 2. 切换到目标分支
echo -e "\n=== 切换到${TARGET_BRANCH}分支 ==="
git switch "${TARGET_BRANCH}" || { echo "Checkout failed"; exit 1; }

# 3. 拉取目标分支最新代码
echo -e "\n=== 拉取${TARGET_BRANCH}分支最新代码 ==="
git pull --rebase origin "${TARGET_BRANCH}" || { echo "Pull failed"; exit 1; }

# 4. 合并源分支到目标分支
echo -e "\n=== 合并${SOURCE_BRANCH}分支到${TARGET_BRANCH}分支 ==="
if ! git merge --no-ff "${SOURCE_BRANCH}"; then
    echo "Merge failed! Aborting."
    git merge --abort
    exit 1
fi

# 检查合并是否成功
if [ $? -eq 0 ]; then
    echo -e "\n=== 合并成功，推送代码到远程 ==="
    git push origin "${TARGET_BRANCH}"
else
    echo -e "\n=== 合并冲突，请手动解决冲突后继续 ==="
    exit 1
fi

# 5. 回到源分支并恢复暂存的修改
echo -e "\n=== 回到${SOURCE_BRANCH}分支并恢复暂存的修改 ==="
git switch "${SOURCE_BRANCH}"
git stash pop

echo -e "\n=== 操作完成！==="